// •	定义一个数值和字符串的联合类型（10分）
let numstr:(number|string)[]=[1,2,'1','2']
console.log(numstr);
// •	定义一个类型断言（10分）
let dyaa:number[]=[1,2,3]
let dybb:number=(dyaa as number[]).length
console.log(dybb);
// •	定义一个 void 实现函数的无返回值（10分）
function fnc():void{
    console.log('赵宇浩');
}
fnc()
// •	定义一个 never 的函数（10分）
function infiniteLoop():never{
    while(true){

    }
}
// •	分别定义 es5 和 ts 的函数定义（10分）
function fx(a:number,b?:number){
    if(b){
        return console.log((a+b));
    }else{
        return console.log(a);
    }
}
fx(1)
// •	定义函数时， 分别实现参数类型、剩余参数、默认参数（10分）
function fn(a:number,b:number){
    return console.log(a+b);
    
}
fn(1,2)


function fnn(a1:string,b1='b1'){
    return console.log(a1+''+b1);
    
}
fnn('a1')
// •	实现一个函数重载（10分）
// •	使用 es5 的方式定义一个类和es6中定义类（10分）
// •	在 ts 中定义一个类并实现继承（10分）
class aa{
    move(distanceInMeters:number=0){
        console.log(`aa moved ${distanceInMeters}m.`);
        
    }
}
class bb extends aa{
    bark(){
        console.log('好好好');
        
    }
}
const cc=new bb()
cc.bark()
cc.move(10)
cc.bark()